﻿using System.Threading.Tasks;
using System.Web;
using System.Web.Mvc;

namespace Kugar.Web.WechatMPOAuth
{
    /// <summary>
    /// 用于处理微信授权过程中,需获取信息,以及事件处理函数
    /// </summary>
    public interface IMPOAuthHandler
    {
        /// <summary>
        /// 用于根据request返回微信公众号的appid以及appSerect的函数
        /// </summary>
        /// <param name="filterContext"></param>
        /// <returns></returns>
        (string appID, string appSerect,string token) MPGetter(ControllerContext controllerContext,ActionDescriptor actionDescriptor);

        /// <summary>
        /// 用户授权回调时,触发该函数,可以用于校验用户等
        /// </summary>
        /// <param name="appID">对应授权的appid</param>
        /// <param name="user">授权的用户信息</param>
        Task OnUserAuthorityAsync (string appID, WechatUserOAuth user, Controller controller);

        /// <summary>
        /// 当前是否授权成功,如果授权不成功的话,则需要跳转到微信授权,如果已登录的,一般在这个函数里校验cookie或者header的值
        /// </summary>
        /// <param name="action"></param>
        /// <returns>如果授权检查成功,则返回true,,否则返回false</returns>
        bool CheckAuthority(AuthorizationContext action);
    }

}
